home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / www / amitrix / swedish31.lha / Extras / AWebShell.rexx next >
OS/2 REXX Batch file  |  1997-09-28  |  4KB  |  150 lines

  1. /* awebshell.rexx */
  2. /*
  3.  * Låt användaren kontrollera AWeb genom tangentbordskommandon i ett
  4.  * skalfönster.
  5.  *
  6.  * Användning:
  7.  *    rx AWebShell.rexx [skärmnamn]
  8.  *
  9.  * Normalt öppnas skalfönstret på den aktuella AWeb-skärmen.
  10.  *
  11.  * Starta det här programmet från AWeb (menyalternativet
  12.  * ARexx / Kör ARexx-program) eller konfigurera det i ARexx-menyn.
  13.  */
  14.  
  15. options results
  16.  
  17. arg s_screen
  18.  
  19. s_port=address()
  20. if left(s_port,5)='AWEB.' then do
  21.    s_awebport=s_port
  22.    s_title='from' s_port
  23. end
  24. else do
  25.    s_awebport=''
  26.    s_port='AWEB.NOPORT'
  27.    call checkport
  28.    s_title=''
  29. end
  30.  
  31. address value s_port
  32. if s_screen='' then do
  33.    'get screen'
  34.    s_screen=result
  35. end
  36.  
  37. if ~open(s_con,'con:999/999/512/200/AWeb - Skal' s_title'/close/screen' s_screen) then exit
  38. call writeln s_con,'AWebs skal. Skriv -h för hjälp.'
  39.  
  40. options failat 21
  41.  
  42. do forever
  43.    call checkport
  44.    call writech s_con,s_port'> '
  45.    s_inline=readln(s_con)
  46.    if eof(s_con) then exit
  47.    parse upper var s_inline s_kwd s_line
  48.    select
  49.       when s_kwd='-A' then do
  50.          parse upper var s_line s_nr .
  51.          s_newport='AWEB.'s_nr
  52.          if find(show('P'),s_newport)>0 then do
  53.             s_port=s_newport
  54.          end
  55.          else call writeln s_con,'Kunde inte hitta porten "'s_newport'".'
  56.       end
  57.       when s_kwd='-D' then do
  58.          call checkport
  59.          address value s_port
  60.          'open file://localhost/PROGDIR:docs/arexx/commands.html target AWebShellHelp'
  61.          'get port target AWebShellHelp'
  62.          if rc=0 then do
  63.             address value result
  64.             'window tofront'
  65.          end
  66.       end
  67.       when s_kwd='-H' then do
  68.          call writeln s_con,''
  69.          call writeln s_con,'Ange ett AWeb ARexx-kommando, eller ett av följande'
  70.          call writeln s_con,'utökade kommandon:'
  71.          call writeln s_con,''
  72.          call writeln s_con,'-A tal            Adressera en annan AWeb-port'
  73.          call writeln s_con,'-D                Visa ARexx-dokumentationen'
  74.          call writeln s_con,'-H                Visa den här hjälpen'
  75.          call writeln s_con,'-S stam namn ...  Visa alla STAM.#.NAMN [#=1..STAM.0]'
  76.          call writeln s_con,'-V var            Visa variabeln VAR'
  77.          call writeln s_con,'-X                Avsluta skalet'
  78.          call writeln s_con,''
  79.          call writeln s_con,'Obs: använd inte variabelnamn som börjar med "S_" i '
  80.          call writeln s_con,'argumenten VAR och STEM.'
  81.          call writeln s_con,''
  82.       end
  83.       when s_kwd='-S' then do
  84.          parse upper var s_line s_stem s_line
  85.          interpret 's_v=symbol("'s_stem'.0")'
  86.          if s_v='VAR' then do
  87.             s_nnames=0
  88.             do s_i=1 while s_line~=''
  89.                parse var s_line s_names.s_i s_line
  90.                s_nnames=s_i
  91.             end
  92.             interpret 's_v='s_stem'.0'
  93.             call writeln s_con,s_v 'Resultat:'
  94.             do s_j=1 to s_v
  95.                do s_i=1 to s_nnames
  96.                   interpret 's_v='s_stem'.'s_j'.'s_names.s_i
  97.                   call writeln s_con,s_stem'.'s_j'.'s_names.s_i'="'s_v'" '
  98.                end
  99.             end
  100.          end
  101.          else call writeln s_con,'Kunde inte hitta stamvariabeln "'s_stem'".'
  102.       end
  103.       when s_kwd='-V' then do
  104.          parse upper var s_line s_name .
  105.          interpret 's_v='s_name
  106.          call writeln s_con,s_name'="'s_v'"'
  107.       end
  108.       when s_kwd='-X' then exit
  109.       when s_inline~='' then do
  110.          drop result
  111.          call checkport
  112.          address value s_port
  113.          ''s_inline
  114.          if rc>1 then do
  115.             call writeln s_con,'Fel:' errortext(rc)
  116.          end
  117.          else do
  118.             if symbol('RESULT')='VAR' then do
  119.                call writeln s_con,'RESULT="'result'"'
  120.             end
  121.          end
  122.       end
  123.       otherwise
  124.    end
  125. end
  126.  
  127. checkport: procedure expose s_port s_awebport
  128.    ports=show('P')
  129.    if find(ports,s_port)=0 then do
  130.       if s_awebport=s_port then exit   /* Must end or else window won't close */
  131.       nr=''
  132.       parse var ports dummy 'AWEB.' nr .
  133.       if nr='' then exit
  134.       address value 'AWEB.'nr
  135.       'get activeport'
  136.       s_port=result
  137.    end
  138. return
  139.  
  140. errortext: procedure
  141.    parse arg code
  142.    select
  143.       when code=5 then e='Kommandot kunde inte utföras'
  144.       when code=10 then e='Ogiltiga argument'
  145.       when code=11 then e='Ogiltigt kommando'
  146.       when code=20 then e='Internt fel'
  147.       otherwise e='Okänd felkod:' code
  148.    end
  149. return e
  150.